2020-2021 Sunseeker Telemetry and Lighting System
aes_ex2_encryptDecryptWithFirstRoundKey.c
Go to the documentation of this file.
1 /* --COPYRIGHT--,BSD
2  * Copyright (c) 2017, Texas Instruments Incorporated
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  *
9  * * Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  *
12  * * Redistributions in binary form must reproduce the above copyright
13  * notice, this list of conditions and the following disclaimer in the
14  * documentation and/or other materials provided with the distribution.
15  *
16  * * Neither the name of Texas Instruments Incorporated nor the names of
17  * its contributors may be used to endorse or promote products derived
18  * from this software without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
22  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
27  * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
28  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
29  * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
30  * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31  * --/COPYRIGHT--*/
32 //******************************************************************************
53 //******************************************************************************
54 #include "driverlib.h"
55 
56 uint8_t DataAESencrypted[16]; // Encrypted data
57 uint8_t DataAESdecrypted[16]; // Decrypted data
58 
59 void main(void){
60  uint8_t Data[16] = {
61  0x00, 0x11, 0x22, 0x33,
62  0x44, 0x55, 0x66, 0x77,
63  0x88, 0x99, 0xaa, 0xbb,
64  0xcc, 0xdd, 0xee, 0xff
65  };
66 
67  uint8_t CipherKey[16] = {
68  0x00, 0x01, 0x02, 0x03,
69  0x04, 0x05, 0x06, 0x07,
70  0x08, 0x09, 0x0a, 0x0b,
71  0x0c, 0x0d, 0x0e, 0x0f
72  };
73 
74  // stop watchdog
75  WDT_A_hold(WDT_A_BASE);
76 
77  // Load a cipher key to module
78  AES_setCipherKey(AES_BASE, CipherKey );
79 
80  // Encrypt data with preloaded cipher key
81  AES_encryptData(AES_BASE, Data, DataAESencrypted);
82 
83  // Reset module (not mandatory - just to delete all registers and keys)
84  AES_reset(AES_BASE);
85 
86  // Load and generate decryption key for 1st decryption round - takes ~52 MCLK
87  AES_setDecipherKey(AES_BASE, CipherKey);
88 
89  // Decrypt data by using pregenerated key - takes ~167 MCLK
90  AES_decryptData(AES_BASE, DataAESencrypted, DataAESdecrypted);
91 
92  // Array DataunAES should now contain the same data as array Data
93  while(1){};
94 }
uint16_t Data
uint8_t CipherKey[32]
uint8_t DataAESdecrypted[16]
uint8_t DataAESencrypted[16]